<?php /* 
==================================================
TextCMS -- simple plain/text CMS with GPL licence
Admincenter start module
(c) 2008, 4X_Pro
Visit us online: http://textcms.ru
==================================================
*/

/** Запрос пароля при входе в CMS, если не установлена сессия пользователя.
Функция сохраняет все параметры запроса POST, если таковые имеются, в виде скрытых полей.
**/
function admstart_login() {
  $login_page = cms_output_load_template('login.htm','admstart');
  $login_page=str_replace('#REQUEST_URI#',$_SERVER['REQUEST_URI'],$login_page);
  $fields='';
  unset($_POST['cms_login']); // сбрасываем поля, используемые при входе, чтобы избежать проблем при смене/неправильном пароле
  unset($_POST['cms_password']);
  foreach ($_POST as $key=>$value) 
    if (is_array($value)) $fields.=_admstart_confirm_recursive($key,$value);
    elseif ($key!='confirm') $fields.='<input type="hidden" name="'.htmlspecialchars($key).'" value="'.htmlspecialchars($value).'" />';
  $page = cms_output_load_template('confirm.htm','cmsmain');
  $login_page=str_replace('#FIELDS#',$fields,$login_page);
  return $login_page;
}

/** Генерирует форму подтверждения выполняемого действия, в которую автоматически помещаются в скрытом виде все поля **/
function admstart_confirm($text,$backurl=false) {
  $data = (strtolower($_SERVER['REQUEST_METHOD'])=='get') ? $_GET : $_POST;
  $fields='';
  foreach ($data as $key=>$value) 
    if (is_array($value)) $fields.=_admstart_confirm_recursive($key,$value);
    elseif ($key!='confirm') $fields.='<input type="hidden" name="'.htmlspecialchars($key).'" value="'.htmlspecialchars($value).'" />';
  $page = cms_output_load_template('confirm.htm','cmsmain');
  if ($backurl==false) $backurl=$_SERVER['HTTP_REFERER'];
  $page=str_replace('#method#',$_SERVER['REQUEST_METHOD'],$page);
  $page=str_replace('#FIELDS#',$fields,$page);
  $page=str_replace('#text#',$text,$page);
  $page=str_replace('#backurl#',$backurl,$page);
  return $page;
}

function _admstart_confirm_recursive($key,$value) {
  $buffer='';
  foreach ($value as $newkey=>$newvalue) {
    if (is_array($newvalue)) $buffer.=_cmsmain_confirm_recursive($key.'['.$newkey.']',$newvalue);
    else $buffer.='<input type="hidden" name="'.htmlspecialchars($key).'['.htmlspecialchars($newkey).']" value="'.htmlspecialchars($newvalue).'" />';
  }
  return $buffer;
}

function admstart_logout() {
  session_destroy();
  $GLOBALS['location']=$GLOBALS['sitepath'];
  $GLOBALS['status']=302;
}

function admstart_main() {
  $page = cms_output_load_template('status.htm','admstart');
  
  $data['basedir']=cms_basedir();
  $data['CMS_VERSION']=TextCMS_version;
  $data['CMS_DEBUG']=$GLOBALS['config']['debug'] ? '<span class="warn">Вкл.</span>' : '<span class="ok">Выкл.</span>';
  $data['CMS_HURLS']=($GLOBALS['config']['hurls']==0) ? 'Выключены' : ($GLOBALS['config']['hurls']==1 ? 'Включены' : 'Через index.php');
  $data['CMS_NOCACHE']=($GLOBALS['config']['nocache']==0) ? '<span class="ok">Выключен</span>' : '<span class="warn">Включен</span>';  
  
  $data['SERVER_SOFT']=$_SERVER['SERVER_SOFTWARE'];
  $data['SERVER_IP']=$_SERVER['SERVER_ADDR'];
  $data['PHP_VERSION']=phpversion();
  if (extension_loaded('gd')) {
    $data['GD_VERSION']=phpversion('gd2');
    if (!$data['GD_VERSION']) $data['GD_VERSION']='Неизвестна';
  }
  else $data['GD_VERSION']='<span class="warn">Не установлена!</span>';
 
  $data['LIMIT_TIME']=ini_get('max_execution_time');
  $data['LIMIT_MEM']=ini_get('memory_limit');
  $data['LIMIT_SIZE']=ini_get('upload_max_filesize').', '.ini_get('post_max_size');
  $data['LIMIT_MEM']=ini_get('memory_limit');
  $data['LIMIT_DISK']=floor(diskfreespace('./')/(1024*1024)).' M';
  
  $data['SCRIPT_ERRORS']=(ini_get('display_errors')) ? '<span class="ok">Вкл.</span>' : '<span class="warn">Выкл.</span>';
  $data['PHP_UPLOAD']=(ini_get('file_uploads')) ? '<span class="ok">Вкл.</span>' : '<span class="warn">Выкл.</span>';  
  $data['PHP_GLOBALS']=(ini_get('register_globals')) ? '<span class="warn">Вкл.</span>' : '<span class="ok">Выкл.</span>';
  $data['PHP_QUOTES']=(ini_get('rmagic_quotes_gpc')) ? '<span class="warn">Вкл.</span>' : '<span class="ok">Выкл.</span>';
  $data['SCRIPT_OWNER']=get_current_user().' ('.getmyuid().')';
  if (function_exists('posix_geteuid')) {
    $data['SCRIPT_RUN']=posix_getpwuid(posix_geteuid()).' ('.posix_geteuid().')';
  }
  else $data['SCRIPT_RUN']='Неизвестно';
  $data['CMS_PATH']=dirname($_SERVER['SCRIPT_FILENAME']);
  $data['SERVER_TEMP']=ini_get('upload_tmp_dir');
  
  $data['WRITABLE_files']=(is_writable(cms_basedir()) ? '<span class="ok">Доступен на запись.</span>' : '<span class="error">Недоступен для записи!</span>');
  $data['WRITABLE_content']=(is_writable(cms_basedir().'content/') ? '<span class="ok">Доступен на запись.</span>' : '<span class="error">Недоступен для записи!</span>');
  $data['WRITABLE_upload']=(is_writable(cms_basedir().'upload/') ? '<span class="ok">Доступен на запись.</span>' : '<span class="error">Недоступен для записи!</span>');
  $data['WRITABLE_content.txt']=((!file_exists(cms_basedir().'content.txt') || is_writable(cms_basedir().'content.txt')) ? '<span class="ok">Доступен на запись.</span>' : '<span class="error">Недоступен для записи!</span>');
  
  cms_module_load('cmsmain');
  $page=cmsmain_replace($page,$data);
  return $page;
}
